package com.risk.management.service;

import com.risk.management.entity.RiskResponse;
import java.util.Date;
import java.util.List;

/**
 * 风险响应计划服务接口
 */
public interface RiskResponseService {
    /**
     * 根据ID查询风险响应计划
     * @param id 响应计划ID
     * @return 响应计划信息
     */
    RiskResponse getRiskResponseById(Long id);
    
    /**
     * 根据风险ID查询风险响应计划
     * @param riskId 风险ID
     * @return 响应计划列表
     */
    List<RiskResponse> getRiskResponsesByRiskId(Long riskId);
    
    /**
     * 根据负责人ID查询风险响应计划
     * @param responsibleId 负责人ID
     * @return 响应计划列表
     */
    List<RiskResponse> getRiskResponsesByResponsibleId(Long responsibleId);
    
    /**
     * 根据状态查询风险响应计划
     * @param status 响应计划状态
     * @return 响应计划列表
     */
    List<RiskResponse> getRiskResponsesByStatus(Integer status);
    
    /**
     * 添加风险响应计划
     * @param riskResponse 响应计划信息
     * @return 是否成功
     */
    boolean addRiskResponse(RiskResponse riskResponse);
    
    /**
     * 更新风险响应计划
     * @param riskResponse 响应计划信息
     * @return 是否成功
     */
    boolean updateRiskResponse(RiskResponse riskResponse);
    
    /**
     * 删除风险响应计划
     * @param id 响应计划ID
     * @return 是否成功
     */
    boolean deleteRiskResponse(Long id);
    
    /**
     * 更新风险响应计划状态
     * @param id 响应计划ID
     * @param status 响应计划状态
     * @return 是否成功
     */
    boolean updateRiskResponseStatus(Long id, Integer status);
    
    /**
     * 更新风险响应计划实际完成时间
     * @param id 响应计划ID
     * @param actualEndTime 实际完成时间
     * @return 是否成功
     */
    boolean updateRiskResponseActualEndTime(Long id, Date actualEndTime);
    
    /**
     * 检查并更新逾期的风险响应计划
     * @return 更新的记录数
     */
    int checkAndUpdateOverdueResponses();
} 